// Load the full build.
var _ = require('lodash');
// Load the core build.
var _ = require('lodash/core');
// Load the FP build for immutable auto-curried iteratee-first data-last methods.
var fp = require('lodash/fp');
 
// Load method categories.
var array = require('lodash/array');
var object = require('lodash/fp/object');
 
// Cherry-pick methods for smaller browserify/rollup/webpack bundles.
var at = require('lodash/at');
var curryN = require('lodash/fp/curryN');

const cars = [
		{name:'Ferrari FF',horsepower:660,dollar_value:700000,in_stock:true},
		{name:'Spyker C12 zagato',horsepower:650,dollar_value:648000,in_stock:false},
		{name:'Jaguar XKR-S',horsepower:550,dollar_value:132000,in_stock:false},
		{name:'Audi R8',horsepower:525,dollar_value:114200,in_stock:false},
		{name:'Aston Martin One-77',horsepower:750,dollar_value:1850000,in_stock:true},
		{name:'Pagain Huayra',horsepower:700,dollar_value:1300000,in_stock:false},
	]
	 ////
	 
	 function TAT(){
	 		return  new Promise((resolve,reject)=>{
	 			resolve('hello')
	 		})
	 	}
	 	var lg = TAT()
	 	
	 	lg.then((value)=>{
	 	   return value+'lagou'
	 	}).then((value)=>{
	 	   return value+'I♥U'
	 	}).then((value)=>{
	 		console.log(value)
	 	})
	
	
///////练习1

	let z = fp.flowRight(fp.prop('in_stock'),fp.last);
	console.log(z(cars))
	
	//////练习2
	
	let x = fp.flowRight(fp.prop('name'),fp.first)
	
	console.log(x(cars))

///练习3
let _average = function(xs){
	return fp.reduce(fp.add,0,xs)
}
const averageDollarValue = fp.flowRight(_average,fp.map(car=>car.dollar_value))
console.log(averageDollarValue(cars))

///练习4

	
	function sanitizeNames(name){
		let _underscore = fp.replace(/\W+/g,'_')
		return fp.flowRight(_underscore,fp.toLower)(name)
	}
	console.log(sanitizeNames(['Hello World','Hello World']));
	